home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / c / mc51bugs.zip / Q38837 < prev    next >
Text File  |  1988-12-13  |  2KB  |  54 lines

  1. Q38837 Invalid Syntax for Function Pointers in Struct Causes Hang
  2. C Compiler
  3. 5.10   | 5.10
  4. MS-DOS | OS/2
  5.  
  6. Summary:
  7.  
  8. In the code example below, omitting the parentheses around *foo when
  9. creating a pointer to a function in a structure hangs both the C
  10. Version 5.10 and QuickC Version 1.01 compilers.
  11.  
  12. Microsoft has confirmed this to be a problem in C Version 5.10 and
  13. QuickC Version 1.01. We are researching this problem and will post new
  14. information as it becomes available.
  15.  
  16. If this code is loaded into QuickC and then immediately compiled, the
  17. compiler flags the syntax error, but then hangs, requiring a warm
  18. reboot. However, if the workaround code sample below is typed directly
  19. into QuickC (not loaded) and then run, the compiler will flag the
  20. error and not hang. Compiling the code with C Version 5.10 hangs the
  21. compiler with no warnings.
  22.  
  23. More Information:
  24.  
  25. The following sample code demonstrates the problem;
  26.  
  27.     typedef struct
  28.       {
  29.         void *fn();                 /* This should read: */
  30.                                     /* void (*fn)();     */
  31.       } STRUCT;
  32.  
  33.     void test (void)
  34.       {;}
  35.     STRUCT a = {test};
  36.     void main (void)
  37.       {;}
  38.     struct
  39.       {
  40.           *foo() ;
  41.        }
  42. The workaround to this problem is to use correct syntax for declaring
  43. function pointers as shown by the following code fragment:
  44.  
  45.     struct
  46.       {
  47.          void (*foo) () ;
  48.       }
  49.  
  50.  
  51.  
  52. Keywords:  S_QuickC buglist1.01 buglist5.10
  53. Updated  88/12/13 07:16
  54.